//
//  UtilCheck.h
//  ydcb
//
//  Created by heyue on 13-5-6.
//  Copyright 2013年 Apple inc. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "RcMD5.h"
#import <QuartzCore/QuartzCore.h>
#import <CommonCrypto/CommonDigest.h>
#import <CoreLocation/CoreLocation.h>

#define PI 3.1415926
typedef NS_ENUM(NSInteger,LanguageType) {
    NSLanguageDefault = 0,                         // 默认本地化
    NSLanguageChineese,  // 中文
    NSLanguageEnglish ,   // 英文

};


@interface UtilCheck : NSObject {

}

/**
 *  十六进制转色值
  @param stringToConvert  色值 eg:@"0x345322" @"ffffff"
  @param alpha 设置透明度0~1  [UIColor clearColor] 尽量少用
 */
+(UIColor *) hexStringToColor: (NSString *) stringToConvert   alpha:(CGFloat)alpha;
/**
 * 自定义颜色值
 */
+(UIColor*)getRZColor:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;
/**
 * 获取设备型号
 */
+(NSString*)getDeviceModel;

/**
 * 比较浮点大小
 @param type 返回类型 0 返回教大值 1 返回教小值
 */
+(CGFloat)Returnsize:(CGFloat)float1  size1:(CGFloat)float2 type:(NSInteger)type;


/*!
 *字符串截取前或者后面的字符串
 @param sourceString 源字符串
 @param NSRange 需要匹配的目标字符串
 @param Type   截取类型 0 字符串之前  1字符串之后
 */
+(NSString*)substring:(NSString*)sourceString NSRange:(NSString*)RangeString Type:(NSInteger)RangeType;

/**
 *字符串截取多长位置
 @param sourceString 源字符串
 @param Type   截取类型 0 从字符串开头截取 1从字符串末尾开始截取
 @param SubLength   截取多少长度字符串
 */
+(NSString*)substring:(NSString*)sourceString Type:(NSInteger)RangeType SubLength:(NSInteger)len;



/**
 *字符串替换 ALL
 @param sourceString 源字符串
 @param Replace 需要替换的源字符串
 @param Target  替换成的字符串
 */
+(NSString*)stringreplace:(NSString*)sourceString Replace:(NSString*)replaceString Target:(NSString*)targetString ;

/**
 *文件是否存在
 @param filePath 文件路劲
 */
+(BOOL)Ishavefile:(NSString*)filePath;

/**
 *统一距离文字 返回多少千米数
 @param Distance 多少米
 */
+(float)Distanceprocess:(NSString*)Distance;

/**
 *统一计数文字 个 十 百  千 万...亿
 */
+(NSString*)Countingprocess:(NSString*)count;

/**
 *统一按钮题颜色 
 @param type 未方案
 */
+(UIColor*)CustomButtonBackgroundColor:(NSInteger)type;


/**
 *统一线条题颜色 
 CustomButtonBackgroundColor
  @param  type 未方案
 */

+(UIColor*)CustomseparatorColor:(NSInteger)type;
/**
 *统一主标题颜色
  @param type 未方案
 */
+(UIColor*)TitleColor:(NSInteger)type;

/**
 *统一副标题颜色
  @param  type 未方案
 */
+(UIColor*)SubtitleColor:(NSInteger)type;

/**
 *统一导航颜色
   @param  navcolor 导航颜色
 
 */
+(UIImage*)NavigationControllerImageByColor:(UIColor*)navcolor ;


/**
 *统一导航颜色
 */
+(UIColor*)NavigationControllerColor;
/**
 *统一视图背景颜色
 */
+(UIColor*)Backgroundcolor;

/**
 *时间转标准时间 指定格式时间字符串
 @param  date 指定时间
 @param  formatter  返回格式
 
 */
+(NSString*)stringByDate:(NSDate*)date  dateFormatter:(NSString*)formatter;
/**
 *日期字符串 标准化时间指定格式
 @param  string  日期字符串
 @param  oldformatter  旧日期格式
 @param  formatter  新返回格式
 */
+(NSDate*)dateByString:(NSString*)string  oldFormatter:(NSString*)oldformatter dateFormatter:(NSString*)formatter;

/**
 *时间戳转标准时间 指定格式时间字符串
 @param  Timestamp  时间戳 eg:(1456234534) 注意括号
@param  formatter  返回格式
 */
+(NSString*)TimestampToDate:(NSString*)Timestamp Formatter:(NSString*)fortter;

/**
 *标准时间指定格式时间转时间戳
 *当前时间转化成时间戳
 */
+(NSString*)DateToTimestamp;

/**
 *当前时间和时间戳的时间差 theDate
  @param  theDate  时间戳 eg:(1456234534) 注意括号
 */
+(NSString *)intervalSinceNow: (NSString *) theDate;
/**
 *倒计时 yyyy-MM-dd HH:mm:ss
   @param  theDate 时间
 eg:   yyyy-MM-dd HH:mm:ss
 */
+(NSString *)countdown: (NSString *) theDate;

/**
 *  依据sex 返回性别
    @param  sexValue  1 返回男 其他返回女
 */
+(NSString*)Sex:(NSString*)sexValue;

/**
 *完整的图片url 缩略图
 @param  url   图片地址 宏定义域名
  @param  thunbtype 缩略处理 宏定义
   @param   isUpdate 是否更新图片 默认头像才会有这个
 */
+(NSURL*)ImageUrlList:(NSString*)url Type:(NSString*)thunbtype isUpdate:(BOOL)isYes;
 

/**
 *标准化json
 @param   responseObject 字典类型
 */
+(NSDictionary*)FormatJSON:(NSDictionary*)responseObject;

/**
 *json转字典
  @param   jsonString  标准json字符串
 */
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;
/**
 *当前时间和本地缓存时间差
   @param   Cachedate 本地缓存时间 
    @return 多少秒
 */
+(CGFloat)TimeCache:(NSString*)Cachedate;

/**
 *当前时间和时间戳的时间差
    @param   Cachedate 时间戳
     @return 返回 NSDateComponents
 */
+(NSDateComponents*)Timestamp:(NSString*)Cachedate;
/**
 *判断是否有特殊字符
  @param   str 时间戳
 */
+(BOOL)IsSpecialString:(NSString *)str;

/**
 *清理html代码
 */
+(NSString *)flattenHTML:(NSString *)html trimWhiteSpace:(BOOL)trim;

/**
 *字典转json
 
 */
+(NSString*)dictionaryToJson:(NSMutableDictionary *)dic;

/**
 *判断是否为空值
 *有值 返回NO
 */
+(BOOL)DataIsNuLL:(NSString *)string;

/**
 *判断是否都是数字
 */
+(BOOL)IsAllNum:(NSString *)string;

/**
 *判断是否式合法email
 */
+(BOOL) IsvalidateEmail: (NSString *) candidate;

/**
 *手机号码验证 MODIFIED BY HELENSONG
 */
+(BOOL) isValidateMobile:(NSString *)mobile;

/**
 *密码验证 至少6位数
 */
+(BOOL) isValidatePassword:(NSString *)password;


/**
 *判断是否是中文字符
 */
+(BOOL) IsExistsChinese:(NSString *)CheckStr;
/**
 *去掉空格 isends 是否仅去掉首位两端 default NO
 */
+ (NSString*)clearSpace:(NSString *)str isends:(BOOL)is;

/**
 *农历转换函数
 */
+(NSString *)LunarForSolar:(NSDate *)solarDate;

/**
 *计算球面距离
 */
+(double)LantitudeLongitudeDist:(double )lon1 lat1:(double)lat1 lon2:(double)lon2 lat2:(double) lat2;

/**
 *计算直径面距离
 */
+(double)distanceBetweenOrderBy:(double)lat1 lat2:(double)lat2 lng1:(double)lng1 lng2:(double)lng2;

//获取mac地址
+(NSString *) macaddress;
/**
 *UUID
 */
+(NSString*)GetUUID;

//生成随机数
+ (NSString *)getVerificationCode;

//生成随机数
/*
 @param endint 除数
 @param Range 范围
 */
+(NSString *)getarc4random:(NSInteger)endint  Range:(NSInteger)rangeindex;


/*
 //比较时间
 return  1: //date02比date01大
 return  0: //date02=date01
 return  -1: //date02比date01小
 */
+(int)compareDate:(NSString*)date01 withDate:(NSString*)date02 dataFormat:(NSString *)dataFormat;

//全角转半角
+(NSString *)convertedAllTohalf:(NSString *)str;


//有空格
+ (BOOL)isHaveSpace:(NSString *)tmpString;

//有中文
+ (BOOL)isHaveChinese:(NSString *)tmpString;

//有数字
+ (BOOL)isHaveNum:(NSString *)tmpString;

//判断字符串首首字符是否为字母
+ (BOOL)isFistletter:(NSString *)tempString;

//车牌号验证
+ (BOOL) validateCarNo:(NSString *)carNo;

//身份证号
+ (BOOL) validateIdentityCard: (NSString *)identityCard;

//压缩图片
+(UIImage *)imageWithImageSimple:(UIImage *)image scaledToSize:(CGSize)newSize;

//纠正图片 图片过大会旋转 选取图片的时候要加上这段代码 避免图片过大导致旋转
+(UIImage *)fixOrientation:(UIImage *)aImage;

/**
 *绘制虚线 view 所在容器 toyy 距顶部多少距离 颜色
 */
+(CAShapeLayer*)shapeLayer:(UIView*)view topy:(CGFloat)y StorkeColor:(UIColor*)color;

/**
 *绘制三角形
 @param view 需要加三角形的容器
 @param point 原点
 @param point1 第一点
 @param point2 第二点
 @param StorkeColor  三角形颜色
 @return CAShapeLayer
 */
+(CAShapeLayer*)shapeLayer:(UIView*)view Point:(CGPoint)point Point1:(CGPoint)point1  Point2:(CGPoint)point2 StorkeColor:(UIColor*)color;


/**
 *uilabel富文本originStr 文本 headindent首行缩进 默认0 不缩进 lineheight行间距 默认1.0 单倍行距
 */
+(NSMutableAttributedString*)LabelAttributedStrin:(NSString*)originStr HeadIndent:(CGFloat)headindent lineHeightMultiple:(CGFloat)lineheight;
/**
 *返回字符串大小范围
 @param string 文本
 @param size 最大范围
 @param font 字号
 */
+(CGSize)sizeWithString:(NSString *)string CGsize:(CGSize)size font:(UIFont *)font;

/**
 *存储图片到本地
 @param Loationstring 沙盒路径
 @param image 对象
 @param filename 名称
 */
+(NSString*)SaveImageToLoation:(NSString*)Loationstring FromImage:(UIImage*)image FilePath:(NSString*)filename;

/**
 *删除存储到本地的图片
  @param Loationstring 沙盒路径
 @param ext 拓展名
 
 */
+(BOOL)DeleteImageToLoation:(NSString*)Loationstring pathExtension:(NSString*)ext;

/**
 *str1字符串忽略大小写比较str2 是否相同
 
 */
+(BOOL)compareString:(NSString*)str1 compareString2:(NSString*)str2;

/**
 *str1字符串忽略大小写str2 是否包含
 */
+(BOOL)compareString:(NSString*)str1 ContaincompareString2:(NSString*)str2;
/**
 *string  字符串改变大小写
  @param lower  yes 全部小写
 */
+(NSString*)comparelowercaseString:(NSString*)str1 isLower:(BOOL)lower;

/**
 *图片加文字水印
 @param img 需要加水印的图片
 @param size  加入没图片size未水印区域
 @param text1 水印文字
 @param msakRect 水印位置 CGRectZero 则不处理
 @param  dict 文字属性 nil则默认
 @return 加好水印的图片
 //属性设置参考http://www.th7.cn/Program/IOS/201403/180653.shtml
 */
+(UIImage *)addText:(UIImage *)img ImageSize:(CGSize)size text:(NSString *)text1   msakRect:(CGRect)rect TextDict:(NSDictionary*)dict;
/**
 *图片加图片水印
 @param img 需要加水印的图片
 @param logo 水印图片
 @param msakRect 水印位置 CGRectZero 则不处理
 @return 加好水印的图片
 
 */
+(UIImage *)addImageLogo:(UIImage *)img text:(UIImage *)logo msakRect:(CGRect)rect;
/**
 *加半透明的水印
 @param img 需要加水印的图片
 @param addImage 水印图片
 @param msakRect 水印位置 CGRectZero 则不处理
 @return 加好水印的图片
 */
+(UIImage *)addImage:(UIImage *)img addImage1:(UIImage *)addImage msakRect:(CGRect)rect;
/**
 *去掉导航黑线
 */
+(UIImage*)ClearBlackNavigation:(UIColor *)color;


/**
 *删除本地图片
 */
+(void)DeleLocationimage:(NSString*)url;



/**
 *api 签名生成
 */
+(NSString*)APPautograph:(NSMutableDictionary*)dict;

/**
 服务器加密校验参数是否是字符串
 */
+(BOOL)KeyValueHasString:(NSMutableDictionary*)dict KeyStr:(NSString*)key;

/**
 *百度坐标转为GCJ-02(火星坐标)
 */
+(CLLocationCoordinate2D)TransformationCoordinate2DByBaidu:(CLLocationCoordinate2D)baiduCoordinate;
/**
 *GCJ-02(火星坐标)转为百度坐标
 */
+(CLLocationCoordinate2D)TransformationCoordinate2DByGaode:(CLLocationCoordinate2D)gaodeCoordinate;

/**
 *将GCJ-02(火星坐标)转为WGS-84
 */
+(CLLocationCoordinate2D)TransformationCoordinate2DByGCJ:(CLLocationCoordinate2D)GCJCoordinate;

/**
 *将WGS-84转为GCJ-02(火星坐标)
 */
+(CLLocationCoordinate2D)TransformationCoordinate2DByWGS:(CLLocationCoordinate2D)WGSCoordinate;

/**
 *头像过期时间
 */
+(NSString*)KLYHeadPicTime;

/**
 *计算时间天以内
 */
+(NSString*)computingTime:(NSInteger)time;
/**
 * 计算距离 公里
 */
+(CGFloat)calculatedDistance:(NSInteger)distance;

/**
 *  判断是不是不在中国
 */
+(BOOL)isLocationOutOfChina:(CLLocationCoordinate2D)location;

/**
 *  自动刷新是否可以
 */
+(BOOL)isAutoRefresh:(NSDate*)lastUpdatedTime;

#pragma mark UserInfo

/*用户是否勾选记住账户 */
+(BOOL)IsKeepAccount;
/**
 * 修改记住账户
 @parme IsKeep YES  保存
 */
+(void)setKeepAccount:(BOOL)IsKeep;


/**
 *  获取版本号
 */
+(NSString*)getVersion;

/**
 *  获取APP名称
 */
+(NSString*)getAppName;

/**
 *  获取APP类别 Happyi | THRC
 */
+(NSString*)getAppType;
/**
 * 是否首次进入APP
 */
+(BOOL)isStatrOpenApp;
/**
 *保存用户已经进入首页
 */
+(void)savetStatrOpenApp;

/**
 *用户是否进行过新手指引
 */
+(BOOL)isPerfect;

/**
 *保存用户是否进行过新手指引
 */
+(void)savePerfect;
 

/**
 *保存分享数据
 */
+(void)saveShareData:(NSDictionary*)shareDice;

/**
 *获取保存分享数据
 */
+(NSDictionary*)getShareData;
/**
 *获取用户修改头像时间
 */
+(NSString*)setUpHeadDateTime:(BOOL)isOnliytime;


/**
 *是否出在审核阶段
 */
+(BOOL)isAPPStoreExamine;

/**
 *修改审核阶段
 */
+(void)setAPPStoreExamine:(BOOL)IsAPPStore;

/**
 *  将数组转化成数据模型
 *
 *  @param array 待转化数组
 *  @param model 目标模型
 *
 *  @return 转化结果
 */
+(NSMutableArray*)arraytoModel:(NSArray*)array targetModel:(id)model;

/**
 *  数据字典转化成数据模型
 *
 *  @param dic   待转化字典
 *  @param model 目标模型
 *
 *  @return 转化结果
 */
+(id)dictionarytoModel:(NSDictionary*)dic targetModel:(id)model;


/**
 *  修改语言
 *
 *  @param languageType
 */
+(void)setLanguage:(LanguageType)languageType;
/**
 *  获取语言话文字
 *
 *  @param title key
 *
 *  @return 返回文字
 */
+(NSString*)language:(NSString*)key;

@end
